/*
day474 
2020.12.14 
*/
#include<iostream>
#include<vector>
using namespace std;

struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};


class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        int len1=this->length(headA);
        int len2=this->length(headB);
        
        ListNode *p1=headA,*p2=headB;
        int dif=abs(len1-len2);
        if(len1>len2)
        {
        	for(int i=0;i<dif;++i)
        	{
        		p1=p1->next;
			}
		}
		else
		{
			for(int i=0;i<dif;++i)
        	{
        		p2=p2->next;
			}
		}
		
		while(p1!=p2)
		{
			p1=p1->next;
			p2=p2->next;
		}
		
		return p1;
    }
    
    int length(ListNode *head)
    {
    	int res=0;
    	while(head)
		{
			res++;
			head=head->next;
		 } 
		return res;
	}
};

int main()
{
	return 0;
}
